/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.uniminuto.park.controlador;

import co.uniminuto.park.clases.AsignarParkinUsuario;
import co.uniminuto.park.clases.Estacionamiento;
import co.uniminuto.park.clases.Usuario;
import co.uniminuto.park.dao.asignarDao;
import co.uniminuto.park.dao.consultarUsuarioDao;

import co.uniminuto.park.dao.consultarrEstacionamientoDao;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;

import javax.faces.bean.ManagedBean;

import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import org.primefaces.context.RequestContext;
import org.primefaces.event.RowEditEvent;
import org.primefaces.model.DualListModel;

/**
 *
 * @author Esteban Rozo
 */
@ManagedBean
@ViewScoped
public class AsignarSitios implements Serializable {

    private Estacionamiento est;
    private List<Estacionamiento> sitio;
    private List<Estacionamiento> sitioFiltrado;
    private List<Usuario> usuario;
    private List<Usuario> usuarioFiltrado;
    private  List<AsignarParkinUsuario> asignados;
    private Usuario user;

    public Usuario getUser() {
        return user;
    }

    public void setUser(Usuario user) {
        this.user = user;
    }
    

    public Estacionamiento getEst() {
        return est;
    }

    public void setEst(Estacionamiento est) {
        this.est = est;
    }
    

   
     

    public List<Usuario> getUsuario() {
        return usuario;
    }

    public void setUsuario(List<Usuario> usuario) {
        this.usuario = usuario;
    }

    public List<Usuario> getUsuarioFiltrado() {
        return usuarioFiltrado;
    }

    public void setUsuarioFiltrado(List<Usuario> usuarioFiltrado) {
        this.usuarioFiltrado = usuarioFiltrado;
    }

    public List<AsignarParkinUsuario> getAsignados() {
        return asignados;
    }

    public void setAsignados(List<AsignarParkinUsuario> asignados) {
        this.asignados = asignados;
    }
    
    public List<Estacionamiento> getSitio() {
        return sitio;
    }

    public List<Estacionamiento> getSitioFiltrado() {
        return sitioFiltrado;
    }

    public void setSitioFiltrado(List<Estacionamiento> sitioFiltrado) {
        this.sitioFiltrado = sitioFiltrado;
    }

    public AsignarSitios() {
        sitio = new ArrayList<Estacionamiento>();
        sitioFiltrado=  new ArrayList<Estacionamiento>();
        sitio = recuperarSitios();
        est= new Estacionamiento();
        usuario=new ArrayList<Usuario>();
        usuario=cargarUsuario();
        user= new Usuario();
    }

    public List<Estacionamiento> recuperarSitios() {
        consultarrEstacionamientoDao c = new consultarrEstacionamientoDao();
        List<Estacionamiento> list;
        //EstacionamientosLista lis = new EstacionamientosLista();
        list = c.getParqueaderos();

        return list;
    }
    public List<Usuario> cargarUsuario(){
    List<Usuario> lista;
    consultarUsuarioDao con = new  consultarUsuarioDao();
    lista= con.getUsuarios();
    return lista;
    }
      public void updateEst(RowEditEvent event) {
          this.est= ((Estacionamiento) event.getObject());
        
          FacesMessage msg = new FacesMessage("Estacionamiento Seleccionado", "Ha seleccionado :"+est.getNombre());  
  
        FacesContext.getCurrentInstance().addMessage(null, msg); 
          //this.est.setId(((Estacionamiento) event.getObject()).getId());
      }
      
        public String Asignar(){
       FacesMessage mes= new FacesMessage(FacesMessage.SEVERITY_WARN, "Error", "Se tiene que seleccionar Usuario y Sitio de Estacionamiento");
              FacesMessage mes2= new FacesMessage(FacesMessage.SEVERITY_INFO, "Exito", "Se ha asignado el usuario al sitio de parqueo");  
       if(this.user==null){
              RequestContext.getCurrentInstance().showMessageInDialog(mes);
              return "g";
         }
           if(this.est.getUbicacion()==null){
              RequestContext.getCurrentInstance().showMessageInDialog(mes);
              return "g";
         }
         
         else{
               asignarDao as=  new asignarDao();
               AsignarParkinUsuario objeto= new AsignarParkinUsuario();
               objeto.setEstac(this.est);
               objeto.setCorreo(this.user.getCorreo());
               as.insertarAsi(objeto);
                RequestContext.getCurrentInstance().showMessageInDialog(mes2);
               
             return "g";
         }
      
      
      }
      
}
